# -*- coding: utf-8 -*-
"""
  @author: xiaoxiong
  @data:  2021/10/18 21:30
  @function:
"""
import pygame
from .. import tools, setup
from .. import constants as c


# 继承 pygame 的 Sprite 类
class FlashingCoin(pygame.sprite.Sprite):
    def __init__(self):
        # 调用父类的 init 方法
        pygame.sprite.Sprite.__init__(self)

        self.frames = []
        self.frame_index = 0
        # 元组 四个图片的宽高
        frame_rects = [(1, 160, 5, 8), (9, 160, 5, 8), (17, 160, 5, 8), (9, 160, 5, 8)]
        self.load_frames(frame_rects)

        # 继承父类的要求
        # 相当于给金币加了个皮肤和方框，用来使金币以合适的时间和地点出现
        # 图片里的第一帧
        self.image = self.frames[self.frame_index]
        # 图片的方框
        self.rect = self.image.get_rect()
        # 图片显示的位置
        self.rect.x = 280
        self.rect.y = 58
        # 计时器
        self.timer = 0

    def load_frames(self, frame_rects):
        # 载入的图片
        sheet = setup.GRAPHICS['item_objects']
        # 获取每一个图片
        for frame_rect in frame_rects:
            # * 在 python 里 是解包的意思
            self.frames.append(tools.get_image(sheet, *frame_rect, (0, 0, 0), c.BG_MULTI))

    def update(self):
        # 得到当前时间
        self.current_time = pygame.time.get_ticks()
        # 期望帧与帧的间隔时间
        frame_durations = [375, 125, 155, 125]

        if self.timer == 0:
            self.timer = self.current_time
        elif self.current_time - self.timer > frame_durations[self.frame_index]:
            self.frame_index += 1
            self.frame_index %= 4
            # 到间隔时间 换成 当前时间
            self.timer = self.current_time

        self.image = self.frames[self.frame_index]
